// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/12/2015 10:03:51 PM				
// -----------------------------

#ifndef _IPlatform_h
#define _IPlatform_h

#include "Common.h"

namespace Flow
{

	class IPlatform
	{
	public:

		// Release the Interface
		virtual void			Release() = 0;

		// Sleep the current thread
		virtual void			Sleep(UInt32 milliseconds) = 0;

		// Get the Platform Type
		virtual Platform::Enum	GetPlatform() const = 0;
		// Are we the specified Platform
		virtual Bool			IsPlatform(Platform::Enum platform) const = 0;

		// Get the Processor Count
		// NOTE: WP8 this will always return 1
		virtual UInt32			GetProcessorCount() const = 0;

		// Get the Root Folder
		virtual tstring			GetRootFolder() const = 0;

		// Get the current thread ID
		virtual UInt32			GetCurrentThreadID() const = 0;
	};

}

#endif